home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / laptop-detect < prev    next >
Text File  |  2008-11-10  |  3KB  |  94 lines

  1. #!/bin/sh -e
  2.  
  3. usage () {
  4.     echo "Usage: $0 [-h|--help|-v|--verbose]"
  5.     echo ""
  6.     echo "  -h | --help      print this help"
  7.     echo "  -v | --verbose   be verbose (messages go to STDOUT)"
  8.     echo "  -V | --version   print version information"
  9.     echo ""
  10.     echo " Possible return values:"
  11.     echo "  0  most likely running on a laptop"
  12.     echo "  1  most likely NOT running on a laptop"
  13.     echo "  2  called with unknown option, -h, --help, -V or --version"
  14. }
  15.  
  16. PRINTIT="/bin/true" # /bin/true accepts any option but never prints anything
  17.  
  18. # Check wether we were asked to be verbose
  19.  
  20. if [ "$1" != "" ]; then
  21.     case "$1" in
  22.         "-v"|"--verbose")
  23.             PRINTIT="echo"
  24.             ;;
  25.         "-V"|"--version")
  26.             echo "Version: 0.13.7ubuntu1"
  27.             exit 2
  28.             ;;
  29.         "-h"|"--help")
  30.             usage
  31.             exit 2
  32.             ;;
  33.         *)
  34.             echo "UNKNOWN OPTION: $1"
  35.             usage
  36.             exit 2
  37.             ;;
  38.     esac
  39. fi
  40.  
  41. # Are we a mac?
  42. if test -d /proc/pmu; then
  43.         batteries=$(grep Battery /proc/pmu/info | cut -f2 -d:)
  44.         if test "$batteries" -ne 0; then
  45.             $PRINTIT "We're a laptop (Mac: batteries found)" >&2;
  46.             exit 0
  47.         fi
  48.         exit 1
  49. fi
  50.  
  51. if [ -r /dev/mem -a -x /usr/sbin/dmidecode ]; then
  52.         # dmidecode to grab the Chassis type
  53.         dmitype=$(dmidecode --string chassis-type)
  54.  
  55.         if test "$dmitype" = "Notebook" || test "$dmitype" = "Portable"; then
  56.             $PRINTIT "We're a laptop (dmidecode returned $dmitype)" >&2
  57.             exit 0
  58.         fi
  59.  
  60.         # turn back on for debugging
  61.         #echo "$dmitype"
  62. fi
  63.  
  64. # check for any ACPI batteries
  65. /sbin/modprobe battery 2> /dev/null || true
  66. if [ -d /sys/class/power_supply ]; then
  67.     if grep -q Battery /sys/class/power_supply/*/type 2>/dev/null; then
  68.             $PRINTIT "We're a laptop (ACPI batteries found)" >&2
  69.             exit 0
  70.     fi
  71. fi
  72. # old interface:
  73. if [ -d /proc/acpi/battery ]; then
  74.         results=`find /proc/acpi/battery -mindepth 1 -type d`
  75.         if [ ! -z "$results" ]; then
  76.             $PRINTIT "We're a laptop (ACPI batteries found)" >&2
  77.             exit 0
  78.         fi
  79. fi
  80.  
  81.  
  82. # check for APM batteries. This sucks, because we'll only get a valid response
  83. # if the laptop has a battery fitted at the time
  84. if [ -f /proc/apm ]; then
  85.     battery=`awk '{print $6}' </proc/apm`
  86.     if [ "$battery" != "0xff" ] && [ "$battery" != "0x80" ]; then
  87.         $PRINTIT "We're a laptop (APM batteries found)" >&2
  88.         exit 0
  89.     fi
  90. fi
  91.  
  92. $PRINTIT "We're not on a laptop (no relevant hint found)" >&2
  93. exit 1
  94.